(function() {
	// 预设值
	var str_moblie = "18812011232",
		str_words = "foo foo bar",
		reg_moblie = /(\s|^)1((3[0-35-9]|4[579]|5[0-35-9]|7[0135678]|8\d)\d|34[0-8])\d{7}(?=\s|$)/g,    // 匹配各种手机号段，号码段来自百度百科
		reg_CT = /(\s|^)1((33|49|53|7[37]|8[019])\d|170[012])\d{7}(?=\s|$)/g,                           // 中国电信号码段
		reg_CUCC = /(\s|^)1((3[012]|45|5[56]|7[56]|8[56])\d|70[4789])\d{7}(?=\s|$)/g,                   // 中国联通号码段
		reg_CMCC = /(\s|^)1((3[5-9]|47|5[012789]|78|8[23478])\d|34[0-8]|70[356])\d{7}(?=\s|$)/g,        // 中国移动号码段
		reg_words = /(\s|^)([A-Za-z]+(-[A-Za-z]+)*)\s+\2(?=\s|$)/g;                                     // 匹配相邻重复单词，包括font-size等词

	// 对输入的文本和正则表达式进行匹配
	function getResult(str, reg) {
		var arr_match, arr_moblie, result;
		
		// 检测输入
		if(!str) {
			return "请输入要测试的文本";
		};
		if(!reg) {
			return "请输入要测试的正则表达式";
		};
		
		// 全局匹配时，match不会返回index等属性，只会返回匹配到的字符串数组
		// "a b c d".match(/\w/)    // ["a", index: 0, input: "a b c d"]
		// "a b c d".match(/\w/g)   // ["a", "b", "c", "d"]
		reg = new RegExp(reg, "g");
		arr_match = str.match(reg);
		
		if(!arr_match) {
			result = "false;<br>匹配失败";
		} else if(reg.toString() == reg_moblie.toString()) {        // 判断是否查询手机号，无法直接判断两个正则相等，这里用了toString
			result = "true;";
			if(arr_moblie = str.match(reg_CT)) {                    // 赋值同时进行条件判断
				result += "<br>匹配到中国电信号码: " + arr_moblie;
			}
			if(arr_moblie = str.match(reg_CUCC)) {
				result += "<br>匹配到中国联通号码: " + arr_moblie;
			}
			if(arr_moblie = str.match(reg_CMCC)) {
				result += "<br>匹配到中国移动号码: " + arr_moblie;
			}
		} else {
			result = "true;<br>匹配到字段: " + arr_match;
		}
		
		return result;
	}
	
	// 界面操作部分
	function getId(elm) {
		return document.getElementById(elm);
	}
	getId("js_arrow_down").onclick = function(e) {
		getId("js_select").style.display = getId("js_select").style.display == "block" ? "none" : "block";
		if(e && e.stopPropagation) {
			e.stopPropagation()
		} else {
			window.event.cancelBubble = true;
		}
	}
	document.onclick = function() {
		getId("js_select").style.display = "none";
	}
	getId("js_reg_mobile").onclick = function() {
		if(!getId("js_str").value) {
			getId("js_str").value = str_moblie;
		}
		getId("js_reg").value = reg_moblie.toString().slice(1,-2);
	}
	getId("js_reg_words").onclick = function() {
		if(!getId("js_str").value) {
			getId("js_str").value = str_words;
		}
		getId("js_reg").value = reg_words.toString().slice(1,-2);
	}
	getId("js_check").onclick = function() {
		getId("js_result").innerHTML = getResult(getId("js_str").value, getId("js_reg").value);
	}
})()